#include <iostream>

//查找数组a中是否存在数组b中的数字
//用hashTable，空间换时间
void func1()
{
    const int maxn = 100010; // 10^5 = 100,000
    bool hashTable[maxn] = {false};
    int a[] = {2,4,6,1,8,10,2,5};
    int b[] = {1,9,5};

    //模拟输入数组b，同时记录在hashTable中
    for(int i=0; i<3; i++) {
        //scanf("%d",&a[i]);
        //以数组b元素值为键，记录在hashTable中
        hashTable[b[i]] = true;
    }

    //模拟输入数组a，同时查找hashTable是否存在数组b中的数
    for(int j=0; j<8; j++) {
        //scanf("%d",&a[j]);
        if(hashTable[a[j]] == true) {
            printf("%d YES\n",a[j]);
        }
    }
}

// 统计数组b中每个元素在数组a中出现的次数
void func2() {
    const int maxn = 100010; // 10^5 = 100,000
    int hashTable[maxn] = {0};
    int a[] = {2,4,6,1,5,10,1,5,5,11,5,20};
    int b[] = {1,9,5};

    // 先统计a数组中每个元素重复次数
    for(int i=0; i<12; i++) {
        hashTable[a[i]] ++;
    }
    //再统计b数组中每个元素值为键，对应hashTable中的值即为b数组每个元素在a数组中出现的次数
    for(int i=0; i<3; i++) {
        printf("value : %d, times : %d\n",b[i],hashTable[b[i]]);
    }
}

int main() {
    std::cout << "Hello, World!" << std::endl;
    //func1();
    func2();
    return 0;
}